// 引入 store
import { defineStore } from 'pinia'
// 引入类型
import type { UserInfo } from '../types/user'
// 引入本地存储方法
import { getCurrentInfo, setCurrentInfo, removeCurrentInfo } from '../utils/storage'

// 定义一个并暴露 store
export const useUserStore = defineStore('user', {
    // 定义状态
    state: () => ({
        userInfo: getCurrentInfo()
    }),
    // 定义方法
    actions: {
        setUserInfo(userInfo: UserInfo) {
            this.userInfo = userInfo
            // 并保存到本地
            setCurrentInfo(userInfo)
        },
        // 退出登录
        logout() {
            this.userInfo = {userId: 0, userName: ""}
            // 并删除本地
            removeCurrentInfo()
        }
    },
    getters: {
        userId(): number{
            return this.userInfo.userId || 0
        },
        userName(): String{
            return this.userInfo.userName || ""
        }
    }
})